package LuMin.interrpt_demo;

import java.util.Scanner;
import java.util.concurrent.TimeUnit;

/**
 * @author lumin
 * @date 2022/04/20 20:55
 **/
public class Main {
    static class B extends Thread {
        @Override
        public void run() {
            while (true) {
                for (int i = 0; i < 1000; i++) {
                    System.out.println("我正在写代码");
                }

                // 休息之前，检查有没有人让我们停止
                if (Thread.interrupted()) {
                    // 有人让我们停止
                    break;      // 跳出 while 循环
                }

                // 每写 1000 行，休息 1s
                try {
                    TimeUnit.SECONDS.sleep(1);
                } catch (InterruptedException e) {
                    // 休息期间，有人让我们停止
                    break;      // 跳出 while 循环      // 大概率是这里
                }

                // 休息之后，检查有没有人让我们停止
                if (Thread.interrupted()) {
                    // 有人让我们停止
                    break;      // 跳出 while 循环
                }
            }

            System.out.println("B 停下来了");
        }
    }

    public static void main(String[] args) {
        B b = new B();
        b.start();

        // 让 B 停止工作
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入任意字符，停止 B 的工作");
        scanner.nextLine(); // 主线程阻塞在这里，直到用户输入内容

        b.interrupt();      // 让 b 停止
    }
}